package gaobo.queue;

import java.util.Stack;

public class MyDeQueue {
    //用栈实现队列
    //栈需要两个
    //1.入队:直接放到第一个栈当中
    //2.出第二个栈当中的数据，如果第二个栈没有数据，那么就把第一个栈当中，所有数据倒入第二个栈
    private Stack<Integer> s1;
    private Stack<Integer> s2;
    public MyDeQueue(){
        s1 = new Stack<>();
        s2 = new Stack<>();
    }

    public void push(int x){
        s1.push(x);
    }
    public int pop(){
        if (empty()){
            return -1;
        }
        if (s2.empty()){
            while (!s1.empty()){
                s2.push(s1.pop());
            }
        }
        return s2.pop();
    }

    public int peek(){
        if (empty()){
            return -1;
        }
        if (s2.empty()){
            while (!s1.empty()){
                s2.push(s1.pop());
            }
        }
        return s2.peek();
    }
    //如果两个栈都是空 那么队列就是空
    public boolean empty(){
        return s1.empty() && s2.empty();
    }

}
